package com.xiaoq.order.vo;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.xiaoq.apis.interpreter.InterCalendar4OrderVo;
import com.xiaoq.order.entity.ShoppingItem;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

@JsonInclude(value = JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class ShopOrderVo implements Serializable {

    private static final long serialVersionUID = 265434152797312087L;

    @ApiModelProperty(name = "userId", value = "下单人id", position = 10)
    private String userId;

    @ApiModelProperty(name = "cellphoneNumber", value = "下单人电话", position = 20)
    private String cellphoneNumber;

    @ApiModelProperty(name = "userRealName", value = "下单人真实姓名", position = 30)
    private String userRealName;

    @ApiModelProperty(name = "shopId", value = "小店ID", position = 40)
    private String shopId;

    @ApiModelProperty(name = "shopName", value = "小店名称", position = 50)
    private String shopName;

    @ApiModelProperty(name = "shopLogoUrl", value = "小店logo的url地址", position = 60)
    private String shopLogoUrl;

    @ApiModelProperty(name = "shopOrderId", value = "小店订单ID", position = 70)
    private String shopOrderId;

    @ApiModelProperty(name = "interpreterId", value = "讲解员Id", position = 80)
    private String interpreterId;

    @ApiModelProperty(name = "createTime", value = "订单创建时间;", position = 90)
    private Long createTime;

    @ApiModelProperty(name = "shoppingItems", value = "本次在当前小店中购买的商品条目集合", position = 100)
    private List<ShoppingItem> shoppingItems = new ArrayList<>();

    @ApiModelProperty(name = "distributionType", value = "配送方式", position = 110)
    private Integer distributionType;

    @ApiModelProperty(name = "expressFee", value = "运费", position = 120)
    private Float expressFee;

    @ApiModelProperty(name = "couponCode", value = "使用的优惠券编码", position = 130)
    private String couponCode; //本次订单中使用的优惠券编码,对应于UserCouponEntity中的couponInstanceEntity

    @ApiModelProperty(name = "userCouponId", value = "用户优惠券ID", position = 140)
    private String userCouponId; //本次订单中使用的优惠券编码,对应于UserCouponEntity中的id

    //@ApiModelProperty(name = "numberOfAvailableCoupons", value = "订单号", position = 140)
    //private int numberOfAvailableCoupons; //可用优惠券的数量

    @ApiModelProperty(name = "totalMoneyOfUsedCoupons", value = "优惠券总金额", position = 150)
    private Integer totalMoneyOfUsedCoupons;

    @ApiModelProperty(name = "totalAmount", value = "当前小店订单的总金额", position = 160)
    private double totalAmount;

    @ApiModelProperty(name = "supplement", value = "订单补充说明", position = 170)
    private String supplement;

    @ApiModelProperty(name = "orderState", value = "小店订单状态", position = 180)
    private Integer orderState; //小店订单状态  @see OrderState.java

    @ApiModelProperty(name = "payState", value = "支付状态", position = 190)
    private Integer payState; //@see PayState.java

    @ApiModelProperty(name = "paidTime", value = "订单支付成功时间", position = 200)
    private Long paidTime;

    @ApiModelProperty(name = "deliveriedTime", value = "订单发货时间", position = 210)
    private Long deliveriedTime;

    @ApiModelProperty(name = "receivedTime", value = "收货时间", position = 220)
    private Long receivedTime;

    @ApiModelProperty(name = "reviewedTime", value = "订单评论时间", position = 230)
    private Long reviewedTime;

    @ApiModelProperty(name = "completedTime", value = "订单完成时间", position = 240)
    private Long completedTime;

    @ApiModelProperty(name = "canceledTime", value = "订单取消时间", position = 250)
    private Long canceledTime;

    @ApiModelProperty(name = "closedTime", value = "订单关闭时间", position = 260)
    private Long closedTime;

    @ApiModelProperty(name = "calendarVo", value = "讲解员日历VO")
    private InterCalendar4OrderVo calendarVo;

    @ApiModelProperty(name = "payType", value = "支付方式：1微信，2、支付宝")
    private Integer payType; //支付方式

    @ApiModelProperty(name = "payEndTime", value = "支付结束时间")
    private Long payEndTime; //支付结束时间（用于倒计时）

    @ApiModelProperty(name = "orderType", value = "订单类型")
    private Integer orderType; //见ConstantUtil

    @ApiModelProperty(name = "payRemainTime", value = "支付的剩余时间，单位（s）")
    private Long payRemainTime;

	@ApiModelProperty(name = "userFrom", value = "用户来自哪里")
	private String userFrom;

	public String getUserId() {
		return userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}

	public String getCellphoneNumber() {
		return cellphoneNumber;
	}

	public void setCellphoneNumber(String cellphoneNumber) {
		this.cellphoneNumber = cellphoneNumber;
	}

	public String getUserRealName() {
		return userRealName;
	}

	public void setUserRealName(String userRealName) {
		this.userRealName = userRealName;
	}

	public String getShopId() {
		return shopId;
	}

	public void setShopId(String shopId) {
		this.shopId = shopId;
	}

	public String getShopName() {
		return shopName;
	}

	public void setShopName(String shopName) {
		this.shopName = shopName;
	}

	public String getShopLogoUrl() {
		return shopLogoUrl;
	}

	public void setShopLogoUrl(String shopLogoUrl) {
		this.shopLogoUrl = shopLogoUrl;
	}

	public String getShopOrderId() {
		return shopOrderId;
	}

	public void setShopOrderId(String shopOrderId) {
		this.shopOrderId = shopOrderId;
	}

	public String getInterpreterId() {
		return interpreterId;
	}

	public void setInterpreterId(String interpreterId) {
		this.interpreterId = interpreterId;
	}

	public Long getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Long createTime) {
		this.createTime = createTime;
	}

	public List<ShoppingItem> getShoppingItems() {
		return shoppingItems;
	}

	public void setShoppingItems(List<ShoppingItem> shoppingItems) {
		this.shoppingItems = shoppingItems;
	}

	public Integer getDistributionType() {
		return distributionType;
	}

	public void setDistributionType(Integer distributionType) {
		this.distributionType = distributionType;
	}

	public Float getExpressFee() {
		return expressFee;
	}

	public void setExpressFee(Float expressFee) {
		this.expressFee = expressFee;
	}

	public String getCouponCode() {
		return couponCode;
	}

	public void setCouponCode(String couponCode) {
		this.couponCode = couponCode;
	}

	public String getUserCouponId() {
		return userCouponId;
	}

	public void setUserCouponId(String userCouponId) {
		this.userCouponId = userCouponId;
	}

	public Integer getTotalMoneyOfUsedCoupons() {
		return totalMoneyOfUsedCoupons;
	}

	public void setTotalMoneyOfUsedCoupons(Integer totalMoneyOfUsedCoupons) {
		this.totalMoneyOfUsedCoupons = totalMoneyOfUsedCoupons;
	}

	public double getTotalAmount() {
		return totalAmount;
	}

	public void setTotalAmount(double totalAmount) {
		this.totalAmount = totalAmount;
	}

	public String getSupplement() {
		return supplement;
	}

	public void setSupplement(String supplement) {
		this.supplement = supplement;
	}

	public Integer getOrderState() {
		return orderState;
	}

	public void setOrderState(Integer orderState) {
		this.orderState = orderState;
	}

	public Integer getPayState() {
		return payState;
	}

	public void setPayState(Integer payState) {
		this.payState = payState;
	}

	public Long getPaidTime() {
		return paidTime;
	}

	public void setPaidTime(Long paidTime) {
		this.paidTime = paidTime;
	}

	public Long getDeliveriedTime() {
		return deliveriedTime;
	}

	public void setDeliveriedTime(Long deliveriedTime) {
		this.deliveriedTime = deliveriedTime;
	}

	public Long getReceivedTime() {
		return receivedTime;
	}

	public void setReceivedTime(Long receivedTime) {
		this.receivedTime = receivedTime;
	}

	public Long getReviewedTime() {
		return reviewedTime;
	}

	public void setReviewedTime(Long reviewedTime) {
		this.reviewedTime = reviewedTime;
	}

	public Long getCompletedTime() {
		return completedTime;
	}

	public void setCompletedTime(Long completedTime) {
		this.completedTime = completedTime;
	}

	public Long getCanceledTime() {
		return canceledTime;
	}

	public void setCanceledTime(Long canceledTime) {
		this.canceledTime = canceledTime;
	}

	public Long getClosedTime() {
		return closedTime;
	}

	public void setClosedTime(Long closedTime) {
		this.closedTime = closedTime;
	}

	public InterCalendar4OrderVo getCalendarVo() {
		return calendarVo;
	}

	public void setCalendarVo(InterCalendar4OrderVo calendarVo) {
		this.calendarVo = calendarVo;
	}

	public Integer getPayType() {
		return payType;
	}

	public void setPayType(Integer payType) {
		this.payType = payType;
	}

	public Long getPayEndTime() {
		return payEndTime;
	}

	public void setPayEndTime(Long payEndTime) {
		this.payEndTime = payEndTime;
	}

	public Integer getOrderType() {
		return orderType;
	}

	public void setOrderType(Integer orderType) {
		this.orderType = orderType;
	}

	public Long getPayRemainTime() {
		return payRemainTime;
	}

	public void setPayRemainTime(Long payRemainTime) {
		this.payRemainTime = payRemainTime;
	} 

    
}